home *** CD-ROM | disk | FTP | other *** search
- #include <exec/exec.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "work:romconf/doorheader.h"
- #define ACCESS_WRITE -1
-
- /****** AmiExpress now will return arrow key information as the following
- codes, these codes are stored as the first character in any
- getuserstring function
- ******/
- #define sm sendmessage
- #define cm sendchar
- #define pu putuserstring
- #define co ConOnly
- #define fk Fhotkey
-
- #define RIGHTARROW 3
- #define LEFTARROW 2
- #define UPARROW 4
- #define DOWNARROW 5
-
- #define gu getuserstring
- #define pu putuserstring
- void Goto(int x,int y); /* Used to position cursor at specific locations
- on the screen
- */
- void sr(char *str); /* removes trailing ascii codes < 33 from any string */
-
- void LastCommand(void);
- void Editor(int leftedge, int topedge,int width,int height);
- void LoadView(char *filename,int leftedge,int topedge,int width,int height);
- void end(void);
- void Record(int x,int y);
- char *viewsize=NULL;
- long visual=0L;
- main(int argc,char *argv[])
- {
- if(argc!=2)
- {
- printf("Window version 1.0, written by Joseph Hodge\n");
- printf("\n");
- exit(0);
- }
- Register(argv[1][0]-'0');
- LoadView("ram:temp",1,10,80,9);
-
- Editor(34,10,44,9);
-
- }
-
- void LastCommand(void)
- {
- sm("",1); sm("",1);
- if(viewsize) FreeMem(viewsize,visual);
- }
- void end(void)
- {
- exit(0);
- }
- void LoadView(char *filename,int leftedge,int topedge,int width,int height)
- {
-
- register int i=0;
- char temp[2];
- int minwidth=0;
- int lines=0;
- FILE *fi;
- temp[1]='\0';
- viewsize=(char *)AllocMem(width*height,MEMF_CLEAR|MEMF_PUBLIC);
- visual=width*height;
- if(viewsize==NULL)
- {
- ShutDown(); end();
- }
- sm("H",0);
- Goto(leftedge,topedge);
- fi=fopen(filename,"rb");
- if(fi!=NULL)
- {
- while(fread((APTR)&temp[0],sizeof(char),1,fi)!=NULL)
- {
- if(temp[0]==13 || temp[0]==12 || temp[0]==10){
- while(minwidth<width && i<visual) { *(viewsize+i)=' '; i++; minwidth++;} minwidth=0;
- lines++; Goto(leftedge,topedge+lines); }
- else
- {
- if(temp[0]!=EOF && i<visual)
- {
- *(viewsize+i)=temp[0]; i++; minwidth++;
- sm(temp,0);
- }
- }
- }
- fclose(fi);
-
- }
- while(i<width*height) { *(viewsize+i)=' '; i++; }
- }
-
- void Editor(int leftedge,int topedge,int width,int height)
- {
- char temp[10];
- int hmd;
- int x=leftedge,y=topedge;
- pu("",RAWARROW); /** Turns off arrowkey filter, allowing us to
- intercept them and do what we wish with it
- **/
-
-
- Goto(x,y);
- do
- {
- hotkey("",temp);hmd=temp[0];
- //hmd=Fhotkey();
- switch(hmd)
- {
- case RIGHTARROW:
- if(x+1<=leftedge+width)
- {
- x++;
- sm("C",0);
- }
- break;
- case LEFTARROW:
- if(x-1>=leftedge)
- { x--;
- sm("D",0);
- }
- break;
- case UPARROW:
- if(y-1>=topedge)
- {
- y--;
- sm("A",0);
- }
- break;
- case DOWNARROW:
- if(y+1<=topedge+height)
- {
- y++;
- sm("B",0);
- }
- break;
- case 12:
- case 13:
- ShutDown();
- end();
- break;
- case '\b':
- if(x-1>=leftedge)
- {
- sm("\b \b",0);
- x--;
- } break;
- default:
- if(x+1<=leftedge+width)
- {
- sm(temp,0);
- x++;
- Record(x,y);
- }
- }
- }while(1);
-
- }
- void Goto(int x,int y)
- {
- char local[20];
- sprintf(local,"%d;%dH",y,x);
- sm(local,0);
- }
-
- void Record(int x,int y)
- {
- }